'''
数据背景：某连锁超市4家门店2024年第二季度（4、5、6月）的营业额（单位：万元），门店A：4月20万、5月25万、6月22万；门店B：4月18万、5月
20万、6月21万;门店C:4月22万、5月23万、6月25万;门店D:4月15万、5月18万、6月20万。绘制要求:以“门店”为X轴，“营业额”为Y轴，用分
组柱状图展示各门店每月的营业额，不同月份用不同颜色的柱子区分，添加图例标注月份，添加图表标题“超市各门店第二季度营业额柱状图”。分析目标：对比各
门店的营业额差异，以及各门店在第二季度内的营业额变化情况。
'''
import matplotlib.pyplot as plt
import numpy as np
#1.准备数据
#门店名称
stores=['门店A','门店B','门店C','门店D']
#4月、5月、6月营业额（单位：万元）
turnover_4=[20,18,22,15]
turnover_5=[25,20,23,18]
turnover_6=[22,21,25,20]
#2.创建画布
plt.figure(figsize=(8, 6), dpi=120)
#3.绘制分组柱状图
#设置X轴刻度位置
x=np.arange(len(stores))
#设置柱子宽度
width=0.25
#绘制4月营业额柱子
rect1=plt.bar(
    x-width,
    turnover_4,
    width,
    label='4月',
    color='skyblue'
)
#绘制5月营业额柱子
rect2=plt.bar(
    x,
    turnover_5,
    width,
    label='5月',
    color='orange'
)
#绘制6月营业额柱子
rect3=plt.bar(
    x+width,
    turnover_6,
    width,
    label='6月',
    color='green'
)
#添加柱子标签
def add_labels(rects):
    for rect in rects:
        height=rect.get_height()
        plt.annotate(
            f'{height}万',
            xy=(rect.get_x()+rect.get_width()/2,height),
            xytext=(0,3),
            textcoords='offset points',
            ha='center',
            va='bottom',
            fontsize=10
        )
add_labels(rect1)
add_labels(rect2)
add_labels(rect3)
#设置图表标题和标签
plt.title('超市各门店第二季度营业额柱状图',fontsize=16,fontweight='bold',pad=20)
plt.xlabel('门店',fontsize=12)
plt.ylabel('营业额（单位：万元）',fontsize=12)
#设置x轴刻度标签
plt.xticks(x,stores,fontsize=12)
#设置y轴刻度标签
plt.yticks(fontsize=12)
#设置图表图例
plt.legend(
    (rect1,rect2,rect3),
    ('4月','5月','6月'),
    fontsize=12
)
#4.避免乱码
plt.rcParams['font.sans-serif'] = ['SimHei']  # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False    # 用来正常显示负号
#5.显示图表
plt.tight_layout()
plt.show()
